<%@ page contentType="text/html" pageEncoding="UTF-8"%>
<% response.setContentType("text/html; charset=UTF-8");%>
<% request.setCharacterEncoding("utf-8");%>
<%@ page import="java.sql.*" %>
<%@ page import="javax.xml.parsers.*" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="java.io.File" %>
<%@ page import="java.util.Date" %>
<%@ page import="java.util.Calendar" %>
<%@ page import="java.text.SimpleDateFormat" %>

<%
	Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(getServletContext().getRealPath("/") + "web.xml"));
	doc.getDocumentElement().normalize();
	String dbhost = doc.getElementsByTagName("host").item(0).getTextContent();
	String dbport = doc.getElementsByTagName("port").item(0).getTextContent();
	String dbuser = doc.getElementsByTagName("user").item(0).getTextContent();
	String dbpass = doc.getElementsByTagName("pass").item(0).getTextContent();
	String dbname = doc.getElementsByTagName("database").item(0).getTextContent();
	String dbconnString = "jdbc:mysql://" + dbhost + ":" + dbport + "/" + dbname + "?setUnicode=true&characterEncoding=UTF-8";
	Class.forName("com.mysql.jdbc.Driver").newInstance();
	Connection dbconn = DriverManager.getConnection(dbconnString, dbuser, dbpass);
	Statement query = dbconn.createStatement();
	Statement query2 = dbconn.createStatement();
%>

<%
	String maBT = request.getParameter("mabt");
	if (maBT == null) {
		return;
	}

	// thêm các lựa chọn vào table ct_baithi và tính điểm
	int socaudung = 0;
	int tongsocauhoi = 0;
	ResultSet rs = query.executeQuery("select * from baithi BT join ct_dethi CTDT on BT.dethi = CTDT.dethi join cauhoi CH on CTDT.cauhoi = CH.maCH "
			+ " where maBT = " + maBT);
	while (rs.next()) {
		String cauhoi = Integer.toString(rs.getInt("CTDT.cauhoi"));
		String luachon = request.getParameter(cauhoi);
		if (luachon == null) {
			luachon = "0";
		}
		if (Integer.parseInt(luachon) == rs.getInt("CH.dapan"))
			socaudung++;
		tongsocauhoi++;
		try {
			query2.executeUpdate("insert into ct_baithi (baithi, cauhoi, luachon) values ( "
					+ maBT + " , " + cauhoi + " , " + luachon + " )");
		} catch (Exception e) {
			out.println("Lỗi insert vào ct_baithi : " + e.getMessage());
		}
	}
	rs.close();
	float diem = Math.round( ((float)socaudung/tongsocauhoi*10) * 10 ) / 10f; // làm tròn 1 sô thì nhân 10 chia 10, 2 số thì nhân 100 chia 100, ...

	// lấy thời gian nộp bài
	Calendar calendar = Calendar.getInstance();
	SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	Date thoigiankt = calendar.getTime();
	
	// lấy thời gian bắt đầu làm bài và thời gian quy định
	try {
		rs = query.executeQuery("select * from baithi join dethi on dethi = maDT join loaidethi on loaidethi = maLDT where maBT = " + maBT);
		rs.next();
		int thoigianquydinh = rs.getInt("thoigian");
		Timestamp thoigianbd = rs.getTimestamp("thoigianbd");
		if ( ((thoigiankt.getTime()-thoigianbd.getTime())/1000/60) > (thoigianquydinh + 1) )
			diem = -1; // phạm qui
	} catch (Exception e) {
		out.println("Lỗi không tìm được loại đề thi : " + e.getMessage());
	}
	rs.close();

	try {
		query.executeUpdate("update baithi set thoigiankt = '" + sdf.format(thoigiankt) + "', diem = " + diem + " where maBT = " + maBT);
	} catch (Exception e) {
		out.println("Lỗi update thoigiankt và diem : " + e.getMessage());
	}

	response.sendRedirect("baithi.jsp?mabt=" + maBT);
%>

<% dbconn.close();%>